/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upn.sigeadmi.cxc.bc;

import edu.upn.sigeadmi.cxc.be.CuentaPendientePago;
import edu.upn.sigeadmi.cxc.be.LetraPendientePago;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import oracle.toplink.essentials.config.HintValues;
import oracle.toplink.essentials.config.TopLinkQueryHints;

/**
 *
 * @author Administrador
 */
@Stateless
public class CuentaPendientePagoFacade implements CuentaPendientePagoFacadeLocal {
    @PersistenceContext
    private EntityManager em;

    public void create(CuentaPendientePago cuentaPendientePago) {
        em.persist(cuentaPendientePago);
    }

    public void edit(CuentaPendientePago cuentaPendientePago) {
        em.merge(cuentaPendientePago);
    }

    public void remove(CuentaPendientePago cuentaPendientePago) {
        em.remove(em.merge(cuentaPendientePago));
    }

    public CuentaPendientePago find(Object id) {
        return em.find(CuentaPendientePago.class, id);
    }

    public List<CuentaPendientePago> findAll() {
        return em.createQuery("select object(o) from CuentaPendientePago as o").setHint(TopLinkQueryHints.REFRESH, HintValues.TRUE).getResultList();
    }
    
@Override
    public List<CuentaPendientePago> filtrar() throws Exception {
        List<CuentaPendientePago>  lista = null;
        try {
                lista = (List<CuentaPendientePago> )em.createQuery("select object(o) from CuentaPendientePago o where o.valorTotal > 0 " ).getResultList();
        //    em.createQuery("SELECT e FROM Employee e WHERE e.firstName LIKE 'J%'", LetraPendientePago.class).getResultList();

        } catch (Exception e) {
            throw e;
        }
        return lista;
    }


@Override
    public List<LetraPendientePago> filtrar_letra(CuentaPendientePago cuentaPendientePago) throws Exception {
        List<LetraPendientePago>  lista = null;
        try {

                lista = (List<LetraPendientePago> )em.createQuery("select object(o) from LetraPendientePago o where o.fkCxcEstadoLtra.pkEstadoLetra = 2 " +
                        "and o.fkCxcCuentaPdtePgo.pkCuentaPendientePago=?" ).setParameter(1,cuentaPendientePago.getPkCuentaPendientePago()).getResultList();

        } catch (Exception e) {
            throw e;
        }
        return lista;
    }

 @Override
     public void insertar(CuentaPendientePago cuentaPendientePago, int numeroLetras)throws Exception {
   //     em.persist(letraPendientePago);

      Query query = em.createNativeQuery(" EXEC spAgregarLetras @FK_CXC_CUENTA_PDTE_PGO =?, @Serie =?,@VALOR_TOTAL =?," +
              " @Numero_letras =? , @FK_GEN_MONEDA =?,@Fecha_Inicio = ?" );
query.setParameter(1,cuentaPendientePago.getPkCuentaPendientePago());

query.setParameter(2, cuentaPendientePago.getSerie());
query.setParameter(3, cuentaPendientePago.getValorTotal());
query.setParameter(4, numeroLetras);
query.setParameter(5,1);
query.setParameter(6,cuentaPendientePago.getFechaVcmto());
query.executeUpdate();

      }

  @Override
     public void insertar_Abono(CuentaPendientePago cuentaPendientePago, double cantidad)throws Exception {
   //     em.persist(letraPendientePago);

      Query query = em.createNativeQuery("EXEC spAgregarAbonos @FK_CXC_CUENTA_PDTE_PGO = ?,@VALOR =?," +
              " @FK_GEN_TIPO_CAMBIO =? , @NUMERO_DCMTO =?,@FK_GEN_FORMA_PGO =?" );
query.setParameter(1,cuentaPendientePago.getPkCuentaPendientePago());
query.setParameter(2, cantidad);
// el tipo de cambio.
query.setParameter(3, 2);
query.setParameter(4,cuentaPendientePago.getSerie());
query.setParameter(5,1);
query.executeUpdate();

      }


}
